package com.raitcon.hibernate.backbean;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import com.raitcon.hibernate.bean.Profesor;
import com.raitcon.hibernate.db.ProfesorDB;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;

/**
 *
 * @author Mike
 */
@ManagedBean(name = "profesorBean")
@ViewScoped
public class ProfesorBean implements Serializable {

    private static final long serialVersionUID = -2477612760546575078L;
    private Integer codProf;
    private String nombres;
    private String apePaterno;
    private String apeMaterno;
    private String dni;
    private String direccion;
    private Date fecNacimiento;
    private String telefono;
    private String domicilio;
    private String pais;
    private String departamento;
    private String email;
    private Date fecContrato;
    private Integer codArea;
    private Integer codAsignatura;
    private List<Profesor> lisProfesor = null;
    private String mensaje;

    @PostConstruct
    public void iniciar() {
        dni = "";
        nombres = "";
        apePaterno = "";
        apeMaterno = "";
        fecNacimiento = new Date();
        telefono = "";
        domicilio = "";
        pais = "";
        departamento = "";
        email = "";
        fecContrato = new Date();
        codArea = 0;
        codAsignatura = 0;
    }

    /**
     * @return the codProf
     */
    public Integer getCodProf() {
        return codProf;
    }

    public void setCodProf(Integer codProf) {
        this.codProf = codProf;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombre) {
        this.nombres = nombre;
    }

    public String getApePaterno() {
        return apePaterno;
    }

    public void setApePaterno(String apePaterno) {
        this.apePaterno = apePaterno;
    }

    public String getApeMaterno() {
        return apeMaterno;
    }

    public void setApeMaterno(String apeMaterno) {
        this.apeMaterno = apeMaterno;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public Date getFecNacimiento() {
        return fecNacimiento;
    }

    public void setFecNacimiento(Date fecNacimiento) {
        this.fecNacimiento = fecNacimiento;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getDomicilio() {
        return domicilio;
    }

    public void setDomicilio(String domicilio) {
        this.domicilio = domicilio;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getFecContrato() {
        return fecContrato;
    }

    public void setFecContrato(Date fecContrato) {
        this.fecContrato = fecContrato;
    }

    public Integer getCodArea() {
        return codArea;
    }

    public void setCodArea(Integer codArea) {
        this.codArea = codArea;
    }

    public Integer getCodAsignatura() {
        return codAsignatura;
    }

    public void setCodAsignatura(Integer codAsignatura) {
        this.codAsignatura = codAsignatura;
    }

    public List<Profesor> getLisProfesor() {
        return lisProfesor;
    }

    public void setLisProfesor(List<Profesor> lisProfesor) {
        this.lisProfesor = lisProfesor;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    //Metodos para el mantenimiento de la entidad (CRUD)
    public void actionlistProfesorAll() {
        lisProfesor = null;
        ProfesorDB proDB = new ProfesorDB();
        lisProfesor = proDB.getProfesorAll();
    }

    public void actionlistProfesorById() {
        Integer idProf = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idProf = Integer.parseInt(((String) params.get("idFormProf:idcodProf")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idProf:" + e.getMessage());
        }
        System.out.println("idcodProf:" + idProf);

        ProfesorDB proDB = new ProfesorDB();
        lisProfesor = proDB.getProfesorById(idProf);
    }

    public void agregarProfesor() {
        String result = "";

        Profesor pro = new Profesor();
        pro.setIdProfesor(codProf);
        pro.setNombre(nombres);
        pro.setApellidoPat(apePaterno);
        pro.setApellidoMat(apeMaterno);
        pro.setDni(dni);
        pro.setDireccion(direccion);
        pro.setFechaNacimiento(fecNacimiento);

        System.out.println("nombre: " + nombres);
        System.out.println("pro: " + pro.toString());
        ProfesorDB proDB = new ProfesorDB();
        mensaje = proDB.insertProfesor(pro);
        //if (result == 1) {
         //   mensaje = "* Se guardo correctamente";
        //} else {
        //    mensaje = "* No se guardo correctamente";
        //}

    }

    public void updateProfesor() throws HibernateException, Exception {
        int result = 0;

        Profesor pro = new Profesor();
        pro.setIdProfesor(codProf);
        pro.setNombre(nombres);
        pro.setApellidoPat(apePaterno);
        pro.setApellidoMat(apeMaterno);
        pro.setDni(dni);
        pro.setDireccion(direccion);
        pro.setFechaNacimiento(fecNacimiento);

        ProfesorDB proDB = new ProfesorDB();
        result = proDB.updateProfesor(pro, codProf);
        if (result == 1) {
            mensaje = "* Se modifico de manera correcta";
        } else {
            mensaje = "* No se puede ejecutar la modificaión";
        }
    }

    public void deleteProfesor() throws HibernateException, Exception {
        int result = 0;
        Integer idProf = 0;
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            ExternalContext externalContext = facesContext.getExternalContext();

            Map params = externalContext.getRequestParameterMap();
            idProf = Integer.parseInt(((String) params.get("idFormProf:idcodProf")));
        } catch (Exception e) {
            System.out.println("Error al capturar parametro idProf:" + e.getMessage());
        }
        System.out.println("cod: " + idProf);
        ProfesorDB proDB = new ProfesorDB();
        List<Profesor> listProfe = proDB.getProfesorById(idProf);
        Profesor profe = null;
        for (Profesor profesor : listProfe) {
            profe = profesor;
        }
        result = proDB.deleteProfesor(profe);
        if (result == 1) {
            System.out.println("result: " + result);
            mensaje = "* Se elimino correctamente";
            System.out.println("mensaje: " + mensaje);
        } else {
            mensaje = "* No se elimino correctamente";
        }
    }

    public void pintarFormularioProfesor() {

        System.out.println("codigo rol: " + codProf);
        Profesor pro = null;
        List<Profesor> lisProfesor;
        ProfesorDB aluDB = new ProfesorDB();
        lisProfesor = aluDB.getProfesorById(codProf);
        for (Profesor profesor : lisProfesor) {
            pro = profesor;
        }

        codProf = (int) pro.getIdProfesor();
        nombres = pro.getNombre();
        apePaterno = pro.getApellidoPat();
        apeMaterno = pro.getApellidoMat();
        dni = pro.getDni();
        direccion = pro.getDireccion();
        fecNacimiento = pro.getFechaNacimiento();

    }
}
